/****************************************
 * Copyright (c) 2015 NiuWa.
 * All rights reserved.
 * Created on 2015年3月11日
 * 
 * Contributors:
 * 	   Percy.Lo - initial implementation
 ****************************************/
package com.niuwa.p2p.utils;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import com.niuwa.p2p.core.utils.DateUtil;
import com.niuwa.p2p.core.utils.DictConstant;

/**
 * @title 日期格式工具包
 *
 * @author Percy.Lo
 * @version 1.0
 * @created 2015年3月11日
 */
public class DateFormatUtils {

	
	/**
	 * @return 返回指定日期的10位格式的字符串
	 */
	public static String getDate10(Date date) {
		DateFormat format = getFormat("yyyy-MM-dd");
		return format.format(date);
	}

	/**
	 * @return 返回今天的10位格式的日期字符串
	 */
	public static String getNow10() {
		return getDate10(new Date());
	}
	
	/**
	 * @return 返回在今天基础上加减n天的10位日期字符串
	 */
	public static String getgetDate10byAddDay(int n) {
		Calendar now = Calendar.getInstance();
		now.add(Calendar.DAY_OF_MONTH, n);
		return getDate10(now.getTime());
	}
	
	/**
	 * 获取指定日期n天后的日期
	 * @param date
	 * @param n
	 * @return
	 */
	public static Date getAppointedDayAfterDay(Date date,int n){
		 Calendar calen = Calendar.getInstance();
		 calen.setTime(date);
		 calen.add(Calendar.DAY_OF_YEAR,n);
		 return calen.getTime();
	}
	
	private static DateFormat getFormat(String pattern) {
		return new SimpleDateFormat(pattern);
	}
			
	/**
	 * 获取相距指定日期的一定期间段的日期
	 * @param date 指定日期 
	 * @param dateDiff 相距Date的一定期间段
	 * @param type 类型 D：天 M：月 Y：年
	 * @return
	 */
	public static String getAppointedDay(Date date, int dateDiff, String type) {
		Date appointedDay = null;
		if(DictConstant.TimeUit.D.getCode().equals(type)){
			appointedDay = DateUtil.addDays(date, dateDiff);
		}else if(DictConstant.TimeUit.M.getCode().equals(type)){				 
			appointedDay = DateUtil.addMonths(date, dateDiff);
		}else if(DictConstant.TimeUit.Y.getCode().equals(type)){				 
			appointedDay = DateUtil.addYears(date, dateDiff);
		}
		return DateUtil.formatDateToString(appointedDay, "yyyy-MM-dd");
	}	
}
